import { defineStore } from "pinia";
import { ref } from "vue";
import {getLoginUserUsingGet, userLogoutUsingPost} from "@/api/userController";

export const useLoginUserStore = defineStore("loginUser", () => {
  // 仅在内存中存储用户状态（不持久化到 localStorage/sessionStorage）
  const loginUser = ref<any>({
    userName: "未登录",
  });

  // 从后端获取当前登录用户（依赖 Session 有效性）
  async function fetchLoginUser() {
    try {
      // 调用后端接口时，浏览器会自动携带 Session ID（通过 Cookie）
      const res = await getLoginUserUsingGet();
      if (res.data.code === 0 && res.data.data) {
        // Session 有效，更新前端状态
        loginUser.value = res.data.data;
      } else {
        // Session 失效（如服务器重启后），重置状态
        loginUser.value = { userName: "未登录" };
      }
    } catch (error) {
      console.error("获取用户信息失败（可能 Session 已失效）", error);
      loginUser.value = { userName: "未登录" };
    }
  }

  // 手动设置用户状态（登录成功时调用）
  function setLoginUser(newLoginUser: any) {
    loginUser.value = newLoginUser;
  }

  // 退出登录（通知后端销毁 Session）
  async function logout() {
    try {
      // 调用后端退出接口（后端需销毁当前 Session）
      await userLogoutUsingPost(); // 假设后端有退出登录接口
    } finally {
      // 无论后端是否成功，前端都重置状态
      loginUser.value = { userName: "未登录" };
    }
  }

  return { loginUser, setLoginUser, fetchLoginUser, logout };
});
